package binary_tree.leetcode;

/**
 * 传入一颗二叉树，按照前序遍历的结果变为字符串
 * @Author Stark
 * @Date 2022/2/25 21:57
 */
public class Num606_TreeToString {
    StringBuilder sb = new StringBuilder();
    public String tree2str(TreeNode root) {
        if(root == null){
            return "";
        }
        //先访问根节点,将值保存进字符串中
        sb.append(root.val);
        //判断左树是否为空
        if(root.left != null){
            //不为空,添加左括号,继续递归左子树
            sb.append("(");
            tree2str(root.left);
            sb.append(")");
        }else{
            //左子树为空,右子树不为空,需要添加空括号
            if(root.right != null){
                sb.append("()");
            }
        }
        //该结点左子树访问完后,递归访问右子树
        if(root.right != null){
            sb.append("(");
            tree2str(root.right);
            sb.append(")");
        }
        return sb.toString();
    }
}
